    /**
    * {{^description}}Gets or Sets {{{name}}}{{/description}}{{{description}}}
    */
    {{#jsonb}}
    @JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class)
    @JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
    {{/jsonb}}
    {{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}} {
        {{#allowableValues}}{{#enumVars}}{{{name}}}({{{value}}}){{^-last}},
        {{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}}

        private {{{dataType}}} value;

        {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}({{{dataType}}} value) {
            this.value = value;
        }

        {{#jackson}}
        @JsonValue
        {{/jackson}}
        public {{{dataType}}} getValue() {
            return value;
        }

        @Override
        public String toString() {
            return String.valueOf(value);
        }

    {{#jsonb}}
        public static final class Deserializer implements JsonbDeserializer<{{datatypeWithEnum}}> {
            @Override
            public {{datatypeWithEnum}} deserialize(JsonParser parser, DeserializationContext ctx, Type rtType) {
                for ({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) {
                    if (String.valueOf(b.value).equals(parser.getString())) {
                        return b;
                    }
                }
                {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + parser.getString() + "'");{{/useNullForUnknownEnumValue}}
            }
        }

        public static final class Serializer implements JsonbSerializer<{{datatypeWithEnum}}> {
            @Override
            public void serialize({{datatypeWithEnum}} obj, JsonGenerator generator, SerializationContext ctx) {
                generator.write(obj.value);
            }
        }
    {{/jsonb}}

    {{#jackson}}
        @JsonCreator
    {{/jackson}}
        public static {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} fromValue(String text) {
            for ({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} b : {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.values()) {
                if (String.valueOf(b.value).equals(text)) {
                    return b;
                }
            }
            {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}}
        }
    }
